package net.sipvip.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;

import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.DecoratedPopupPanel;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.StackPanel;

public class Itsetyydytys implements EntryPoint {

	final ImageHoverHandler commondesc = new ImageHoverHandler(
			"Yleisesti itsetyydytyksen katsotaan olevan mitä normaalein ja turvallisin seksuaalisen toiminnan muoto. Sitä esiintyy aina varhaislapsuudesta vanhuuteen saakka, niin ihmisillä kuin kaikilla muillakin nisäkkäillä. Pienet lapset saattavat masturboida, vaikka he eivät tietoisesti tiedä mistä on kysymys. Yleensä se on sattumalta opittua. Ei ole mitään todisteita itsetyydytyksen minkäänlaisesta lääketieteellisestä haitallisuudesta muille kuin Peyronien sairaudesta kärsiville. Kielteinen vaikutus itsetyydytykseen liittyen on orgasmin yhteydessä koettu väsymyksen tunne, joka johtuu endorfiinien vaikutuksesta ja parasympaattisen hermoston aktivoitumisesta. Samoin runsaasta tai kovakouraisesta itsetyydytyksestä miehillä nahka voi rasittua tai iho voi verestyä. Tyypillinenlähde? virhe itsetyydytyksessä on käyttää liukasteena saippuaa tai muuta pesuainetta: se johtaa nopeasti ihovaurioihin, tulehduksiin ja jopa allergian puhkeamiseen. Vaihtoehtoina kosteusvoide tai varsinainen liukastusvoide ovat parempia.");

	final ImageHoverHandler masturbatingman = new ImageHoverHandler(
			"Miesten itsetyydytys on usein käden avulla esinahan liikuttamista terskan yli ja takaisin siittimen ollessa erektiossa. Terskaa voi hyväillä suoraan kädelläkin. Kivespussien hyväily on tavallista, samoin peräaukon seutu. Toiset pitävät siittimen puristelusta ja esinahan tai kivespussien vetämistä kireälle sekä kivesten puristelusta. Toimintaa yleensä jatketaan, kunnes orgasmi saavutetaan. Orgasmissa sukukypsillä miehillä purkautuu siittimen päästä vaaleaa siemennestettä. Orgasmiin liittyy voimakas, miellyttävä tunne. Monet miehet pitävät siemennesteen purkautumisen aiheuttamasta tunteesta. Itsetyydytyksessä voidaan käyttää myös seksivälineitä lisäämässä mielihyvän tunnetta.");

	final ImageHoverHandler masturbatingwomen = new ImageHoverHandler(
			"Naiset pitävät usein häpyhuulten ja klitoriksen pään hyväilystä. Klitoriksen pää on ihmiselimistön herkin paikka, sillä siinä on tuhansia hermopäätteitä. Emättimeen voidaan työntää sormia ja stimuloida G-pistettä ja emättimen aukkoa. G-piste on emättimen etupuolella, noin 3-4 senttimetrin syvyydessä oleva kohta, joka on erityisen herkkä. Peräaukon seutua voidaan myös hyväillä, samoin rintoja. Jotkut naiset pitävät hävyn stimuloimisesta suihkulla. Seksivälineitä, kuten hieromasauvoja käytetään yleisesti. Itsetyydytystä jatketaan yleensä orgasmiin asti niiden naisten kohdalla, jotka saavat orgasmeja. Orgasmi on naisilla samankaltainen tuntemus kuin miehilläkin. Jotkut naiset ejakuloivat orgasmissa virtsaputkesta nestettä, joka ei kuitenkaan ole virtsaa. Normaalisti häpy ja emätin kostuvat kiihottumisen vuoksi.");

	final ImageHoverHandler didos = new ImageHoverHandler(
			"Sekä miehet että naiset voivat harrastaa itsetyydytystä monissa ei asennoissa. Osa miehistä kokee peniksen hieromisen vuodevaatteita tai tyynyä vasten nautinnolliseksi. Naiset saavuttavat hekuman huipun joko pitämällä jalkoja toisista erillään tai puristamalla niitä voimakkaasti yhteen yhtäaikaisesti alapää-ärsytyksen kanssa.");


	final Grid commondescgrid = new Grid(1, 4);
	final Grid masturbatingmangrid = new Grid(1, 3);
	final Grid masturbatingwomengrid = new Grid(1, 2);
	final Grid videos = new Grid(2, 5);
	final Grid ytgrid = new Grid(5, 5);
	final StackPanel panel = new StackPanel();
//	{
//        public void onBrowserEvent(Event event) {
//            handleBrowserEvent(event);
//            super.onBrowserEvent(event);
//    }
//};

	final DecoratorPanel decPanel11 = new DecoratorPanel();
	final DecoratorPanel decPanel12 = new DecoratorPanel();
	final DecoratorPanel decPanel13 = new DecoratorPanel();
	final DecoratorPanel decPanel14 = new DecoratorPanel();

	final DecoratorPanel decPanel21 = new DecoratorPanel();
	final DecoratorPanel decPanel22 = new DecoratorPanel();

	final DecoratorPanel decPanel31 = new DecoratorPanel();
	final DecoratorPanel decPanel32 = new DecoratorPanel();

	final DecoratedPopupPanel popup11 = new DecoratedPopupPanel(true);
	final DecoratedPopupPanel popup12 = new DecoratedPopupPanel(true);
	final DecoratedPopupPanel popup13 = new DecoratedPopupPanel(true);

	public void onModuleLoad() {

		if (!GWT.isScript()) {
			GWT.log("Hosted mod", null);
		}

		GWT.log(GWT.getModuleBaseURL(), null);
		
		track("Load");

		commondescgrid.setTitle("Yleistä");
		masturbatingman.setTitle("Miesten itsetyydytys");
		masturbatingwomen.setTitle("Naisten itsetyydytys");
		didos.setTitle("Itsetyydytyksen hyödyt");

		commondesc.setUrl("/images/commondesc.jpg");
		masturbatingman.setUrl("/images/masturbating_man.jpg");
		masturbatingwomen.setUrl("/images/masturbating_women.jpg");
		didos.setUrl("/images/didos.jpg");

		DOM.setInnerHTML(RootPanel.get("loading").getElement(), "");
		panel.setVisible(false);

		cleanTimer.schedule(500);

		decPanel11.setWidget(commondesc);
		commondescgrid.setWidget(0, 0, decPanel11);
		decPanel12.setWidget(masturbatingman);
		commondescgrid.setWidget(0, 1, decPanel12);
		decPanel13.setWidget(masturbatingwomen);
		commondescgrid.setWidget(0, 2, decPanel13);
		decPanel14.setWidget(didos);
		commondescgrid.setWidget(0, 3, decPanel14);
		panel.add(commondescgrid, "Itsetyydytys", false);
	
		 videos.setWidget(0, 0, new Lesson("http://89.18.248.118:7900/sources/108/original/Hairy legs.mp4","http://89.18.248.118:7900/sources/108/thumb/Hairy legs.jpg"));
		 videos.setWidget(0, 1, new Lesson("http://89.18.248.118:7900/sources/117/original/Bill.mp4","http://89.18.248.118:7900/sources/117/thumb/Bill.jpg"));
		 videos.setWidget(0, 2, new Lesson("http://89.18.248.118:7900/sources/354/original/masturbation1.mp4","http://89.18.248.118:7900/sources/354/thumb/masturbation1.jpg"));
		 videos.setWidget(0, 3, new Lesson("http://89.18.248.118:7900/sources/353/original/masturbation2.mp4","http://89.18.248.118:7900/sources/353/thumb/masturbation2.jpg"));
		 videos.setWidget(0, 4, new Lesson("http://89.18.248.118:7900/sources/110/original/Covert Missions.mp4","http://89.18.248.118:7900/sources/110/thumb/Covert Missions.jpg"));
		 videos.setWidget(1, 0, new Lesson("http://89.18.248.118:7900/sources/129/original/Sex Guide HandJobs.mp4","http://89.18.248.118:7900/sources/129/thumb/Sex Guide HandJobs.jpg"));
		 videos.setWidget(1, 1, new Lesson("http://89.18.248.118:7900/sources/315/original/Mastubates.mp4","http://89.18.248.118:7900/sources/315/thumb/Mastubates.jpg"));
		 videos.setWidget(1, 2, new Lesson("http://89.18.248.118:7900/sources/293/original/150609-1.mp4","http://89.18.248.118:7900/sources/293/thumb/150609-1.jpg"));
		 
		 
		panel.add(videos, "Videot", false);

		JSONRequest
				.get(
						"http://gdata.youtube.com/feeds/api/videos?alt=json-in-script&q=masturbation|itsetyydytys&orderby=relevance_lang_fi&max-results=25&v=2&callback=",
						new JSONRequestHandler() {

							public void onRequestComplete(JavaScriptObject json) {

								JSONObject j = new JSONObject(json);
//								GWT.log(j.toString(), null);
								JSONArray jentry = j.get("feed").isObject()
										.get("entry").isArray();
								GWT.log(jentry.toString(), null);
								for (int i = 0; i < jentry.size(); ++i) {
									JSONString jtitle = jentry.get(i)
											.isObject().get("title").isObject()
											.get("$t").isString();

									JSONArray jimg = jentry.get(i).isObject()
											.get("media$group").isObject().get(
													"media$thumbnail")
											.isArray();
									JSONString jimgdefault = jimg.get(0)
											.isObject().get("url").isString();

									JSONObject jvideo = jentry.get(i)
											.isObject().get("media$group")
											.isObject().get("yt$videoid")
											.isObject();
//									GWT.log(jvideo.toString(), null);
									JSONString jvideourl = jvideo.get("$t")
											.isString();

									int a = (int) i / 5;

									int b = i;

									if (i > 4) {
										b = i - 5;

									}
									if (i > 9) {
										b = i - 10;

									}

									if (i > 14) {
										b = i - 15;

									}

									if (i > 19) {
										b = i - 20;

									}

									DecoratorPanel dk = new DecoratorPanel();
									Grid dkgrid = new Grid(2, 1);

									YTplayer ytplayer = new YTplayer(jvideourl
											.stringValue());
									ytplayer.setUrl(jimgdefault.stringValue());
									dkgrid.setWidget(0, 0, ytplayer);
									dkgrid.setText(1, 0, jtitle.stringValue());

									dk.add(dkgrid);
									ytgrid.setWidget(a, b, dk);

								}
							}

						});
		
		panel.add(ytgrid, "Muut Videot");

		panel.setSize("760px", "180px");
		
//		panel.sinkEvents(Event.MOUSEEVENTS);

		RootPanel.get("start").add(panel);

	}

	Timer cleanTimer = new Timer() {
		// @Override
		public void run() {

			// DOM.setInnerHTML(RootPanel.get("google2").getElement(), google);
			// DOM.setStyleAttribute(RootPanel.get("loading").getElement(),"color",
			// "red");
			panel.setVisible(true);

		}
	};

//	public void handleBrowserEvent(Event event) {
//        if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) {
//
//        	GWT.log("in " +panel.getSelectedIndex(), null);
//        } else if (DOM.eventGetType(event) == Event.ONMOUSEUP) {
//
//        	GWT.log("out " + panel.getSelectedIndex(), null);
//        }
//}
	/**
	 * use google analytics (integrated) for tracking
	 * 
	 * @param event
	 */
	private static native void track(String event) /*-{
		var pageTracker = $wnd._gat._getTracker("UA-6672244-6");
		    pageTracker._trackPageview(event);
	}-*/;
}
